MongoDB তে MapReduce একটি শক্তিশালী প্রযুক্তি যা ডেটাবেসের ডেটাকে প্রসেস এবং বিশ্লেষণ করার জন্য ব্যবহৃত হয়। MapReduce মূলত দুটি পর্যায়ে কাজ করে:
- Map phase: এই পর্যায়ে ইনপুট ডেটা বিভিন্ন ছোট ছোট টুকরোতে বিভক্ত করা হয় এবং প্রতিটি টুকরোকে আলাদা করে প্রক্রিয়া করা হয়।
- Reduce phase: এই পর্যায়ে একই কী-ভিত্তিক ডেটাগুলি একত্রিত করা হয় এবং একটি ফলাফল তৈরি করা হয়।
Java MongoDB ড্রাইভার ব্যবহার করে MongoDB তে সহজ একটি MapReduce জব তৈরি করা যায় যা ডেটা বিশ্লেষণ এবং সারসংক্ষেপের কাজ করতে সক্ষম। এখানে একটি সহজ MapReduce জব তৈরি করার পদ্ধতি আলোচনা করা হবে।
MongoDB তে Simple MapReduce Job তৈরি করা
১. MongoDB Java Driver ইনস্টলেশন
প্রথমে আপনার Java প্রজেক্টে MongoDB Java Driver ডিপেনডেন্সি যোগ করতে হবে।
Maven Dependency:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>4.4.0</version>
</dependency>
Gradle Dependency:
implementation 'org.mongodb:mongo-java-driver:4.4.0'
২. MongoDB তে Sample Data ইনসার্ট করা
ধরা যাক, আমাদের একটি ডাটাবেস আছে যেখানে sales নামক একটি সংগ্রহ (collection) আছে এবং আমরা তার মাধ্যমে MapReduce প্রক্রিয়া ব্যবহার করতে চাই। প্রথমে কিছু উদাহরণস্বরূপ ডেটা ইনসার্ট করা হবে।
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("salesDB");
MongoCollection<Document> collection = database.getCollection("sales");
// ইনসার্ট কিছু ডেটা
collection.insertOne(new Document("item", "apple").append("quantity", 10).append("price", 2));
collection.insertOne(new Document("item", "banana").append("quantity", 15).append("price", 1));
collection.insertOne(new Document("item", "apple").append("quantity", 5).append("price", 2));
collection.insertOne(new Document("item", "banana").append("quantity", 10).append("price", 1));
এখানে sales নামক সংগ্রহে কিছু ডেটা ইনসার্ট করা হয়েছে, যেখানে item, quantity, এবং price আছে।
৩. MapReduce জব তৈরি করা
এখন আমরা MongoDB তে একটি সাধারণ MapReduce জব তৈরি করব, যেখানে আমরা প্রতি আইটেমের জন্য মোট বিক্রয় মূল্য বের করব।
MapReduce কোড:
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.model.MapReduceOptions;
import org.bson.Document;
MongoCollection<Document> collection = database.getCollection("sales");
// Map function (পণ্য অনুযায়ী পরিমাণ * মূল্য গণনা করা)
String mapFunction = "function() { emit(this.item, this.quantity * this.price); }";
// Reduce function (মোট বিক্রয় মূল্য বের করা)
String reduceFunction = "function(key, values) { return Array.sum(values); }";
// MapReduce অপারেশন চালানো
MongoCursor<Document> cursor = collection.mapReduce(mapFunction, reduceFunction)
.options(new MapReduceOptions().outputCollection("sales_summary"))
.iterator();
// ফলাফল প্রদর্শন
while (cursor.hasNext()) {
Document doc = cursor.next();
System.out.println(doc.toJson());
}
এখানে, mapFunction পণ্য অনুযায়ী পরিমাণ (quantity) এবং মূল্য (price) গুণ করে একটি ফলাফল তৈরি করছে। এরপর, reduceFunction এই ফলাফলগুলির যোগফল বের করছে, অর্থাৎ প্রতি পণ্যটির মোট বিক্রয় মূল্য বের করছে। mapReduce অপারেশনটি একটি নতুন সংগ্রহে (sales_summary) ফলাফল সংরক্ষণ করবে।
৪. ফলাফল দেখতে
MapReduce জবটি চালানোর পর, ফলাফল MongoDB তে একটি নতুন সংগ্রহে sales_summary সংরক্ষিত হবে। আপনি এই সংগ্রহটি থেকে ফলাফল দেখতে পারেন:
MongoCollection<Document> resultCollection = database.getCollection("sales_summary");
MongoCursor<Document> resultCursor = resultCollection.find().iterator();
while (resultCursor.hasNext()) {
Document resultDoc = resultCursor.next();
System.out.println(resultDoc.toJson());
}
এই কোডটি sales_summary সংগ্রহ থেকে প্রতিটি পণ্যের জন্য মোট বিক্রয় মূল্য প্রদর্শন করবে।
MongoDB তে MapReduce জব ব্যবহার করে ডেটা প্রক্রিয়া এবং বিশ্লেষণ করা অনেক সহজ। Java MongoDB ড্রাইভার ব্যবহার করে আপনি MongoDB তে MapReduce অপারেশন চালিয়ে ডেটা থেকে অর্থপূর্ণ ফলাফল বের করতে পারেন। এটি MongoDB ডেটাবেসের শক্তিশালী ফিচার যা বড় ডেটাসেট বা জটিল গণনা সমাধানে সাহায্য করে।
Read more